import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int m = in.nextInt();
            int k = in.nextInt();
            int[][] nums = new int[n + 1][m + 1];
            int[][] dp = new int[n + 1][m + 1];
            int[][] s = new int[n + 1][m + 1];
            in.nextLine();
            for (int i = 0; i < k; i++) {
                int x = in.nextInt();
                int y = in.nextInt();
                nums[x][y] = 1;
            }
            for (int i = 1; i < nums[0].length; i++) {
                dp[1][i] = 1;
            }
            for (int i = 1; i < nums.length; i++) {
                dp[i][1] = 1;
            }
            for (int i = 2; i < nums.length; i++) {
                for (int j = 2; j < nums[0].length; j++) {
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
                }
            }
            for (int i = 1; i < s[0].length; i++) {
                if (nums[1][i] != 1) {
                    s[1][i] = 1;
                } else {
                    break;
                }
            }
            for (int i = 1; i < s.length; i++) {
                if (nums[i][1] != 1) {
                    s[i][1] = 1;
                } else {
                    break;
                }
            }
            for (int i = 2; i < s.length; i++) {
                for (int j = 2; j < s[0].length; j++) {
                    if (nums[i][j] != 1) {
                        s[i][j] = s[i - 1][j] + s[i][j - 1];
                    } else {
                        s[i][j] = 0;
                    }
                }
            }
            double ret = s[n][m] * 1.0 / dp[n][m];
            System.out.printf("%.2f", ret);
            System.out.println();
        }
    }
}